Data-flow and Control-flow Analysis of AspectJ Software for Program Slicing
نویسندگان
چکیده
We propose an approach for program slicing of AspectJ software, based on a novel data-flow and control-flow program representation. The representation is built at the source-code level and, unlike previous work, captures the semantic intricacies of various pointcut designators, multiple advices per joint point, dynamic advices, exceptions, and general flow of data to, from, and between advices. We also present algorithms for dependence analysis, system dependence graph construction, and slicing of AspectJ programs. These algorithms are built on top of the proposed representation, and take into account the complex flow of data and control due to aspect-oriented features. We present an experimental study on 37 programs, using our AJANA analysis framework which is based on the abc AspectJ compiler. The results show that the representation can be built efficiently, that it is superior to an approach based on the woven bytecode, and that slicing is both faster and more precise. These findings strongly indicate that the proposed general approach is a promising solution for slicing and similar analyses of AspectJ software, in various tools for program comprehension, change impact analysis, program integration, software testing, and software debugging.
منابع مشابه
AJcFgraph - AspectJ Control Flow Graph Builder for Aspect-Oriented Software
The ever-growing usage of aspect-oriented development methodology in the field of software engineering requires tool support for both research environments and industry. So far, tool support for many activities in aspect-oriented software development has been proposed, to automate and facilitate their development. For instance, the AJaTS provides a transformation system to support aspect-orient...
متن کاملAnalysis and Testing of Programs with Exception Handling Constructs
Analysis techniques, such as control flow, data flow, and control dependence, are used for a variety of software-engineering tasks, including structural and regression testing, dynamic execution profiling, static and dynamic slicing, and program understanding. To be applicable to programs in languages, such as Java and C++, these analysis techniques must account for the effects of exception occ...
متن کاملStatic inter-BPEL program slicing for web services
Analysis and maintenance of BPEL programs play a vital role in assuring the quality of Web service software. In the paper, the concept of inter-service control flow graph (ISCFG) is proposed to represent the interaction behaviours between service units. Meanwhile, the traditional data flow analysis is extended to handle combinatorial structure of variables in BPEL program. Then, a method for co...
متن کاملTerm Dependence Graphs 1
Program slicing is a method for decomposing programs by analyzing their data and control flow. It has many applications in the field of software engineering (like program debugging, testing, code reuse, maintenance, etc). The so called program dependence graph—a data structure that stores control and data dependences between the statements of imperative programs—is a key ingredient of many slic...
متن کاملStatic Interprocedural Slicing of Shared Memory Parallel Programs
Software tools for program debugging, software testing, software maintenance, and program understanding have all effectively utilized static program slicing techniques. In this paper, we present an approach to extend this capability to explicitly parallel shared memory programs written using the OpenMP standard. In particular, interprocedural static program slicing of OpenMP programs is enabled...
متن کامل